 
import * as echarts from '../../../ec-canvas/echarts';

var api = require('../../../utils/api.js'); 
var $ = require('../../../utils/util.js'); 
var regeneratorRuntime = require('../../../utils/runtime.js')
var app = getApp();
var Store = app.Store


function setOption(chart, series, data) { 
  series = series.map((item,index)=>{
    item.type = 'line',
    item.connectNulls= true,   //这个是重点，将断点连接
    //item.symbol='circle',     //设定为实心点
    item.symbolSize=2,   //设定实心点的大小
    item.areaStyle = {
      normal: {
        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
          offset: 0,
          color: app.data.area_chartsColors[index]
        }, {
          offset: 1,
          color: 'rgba(255,255,255,.5)'
        }])
      }
    }
    item.itemStyle = {
      normal: {
        lineStyle: {
          width: 1.0// 0.1的线条是非常细的了
        }
      }
    }
    return item
  })

  var _cem = ($.getCurrentDate().getHour() * 60 + $.getCurrentDate().getMinute())/1435*100
  var _csm = _cem - 20 >0? _cem-20: 0   
  const option = {
    color: app.data.line_chartsColors,
    grid: {
      x: 40,
      y: 55,
      x2: 20,
      y2: 60,
      borderWidth: 1
    },
    tooltip: {
      trigger: 'axis',

    },
    legend: {
      type : 'scroll',
      padding: [5, 10, 5, 20],
    },
    xAxis: {
      type: 'category',
      boundaryGap: false, 
      data,
    },
    yAxis: {
      type: 'value', 
    },
    dataZoom: [
      {
        type: 'inside',
        start: _csm,
        end: _cem
      },
      {
        start: _csm,
        end: _cem,
        type: 'slider',
      }
    ],
    series
  }
  chart.setOption(option);
}


 
Page({
  data: { 
    ycdm: '', // 默认数据(相电流、线电压........)
    station: 0, // 站房
    ycxlm: '', // 设备
    time: $.getCurrentDate().getFullDate(), // 时间 
    tabsList: app.data.ycdmArr, // 固定死的值（相电流、线电压........）
    tabsActive:0, // 多个菜单
    isShowC: true, // 是否显示
    measuring: '', // 单位
    tabList: [ // 当前和最大数据
      { name: '负荷', type: 1, icon: 'icon-shijian' },
      { name: '电量', type: 2, icon: 'icon-tick' }
    ], // tab  
    tabActive: 0, // 一级菜单
    dzTab: 0, // 当前和最大 
    eqlist: [ // 设备列表
    ],
    eqIndex: 1, // 头部弹框的选择（第二层设备） --- 第一个是站房
    isShowPop: false, // 是否显示弹框 
    isShowTime: false, // 是否显示时间弹框
    z_max_data: null, // 负荷昨日数据
    j_max_data: null, // 负荷今日数据
    currentTime: $.transformTime(), // 当前实际时间
    current_data: 0, // 实时负荷
    total_data: 0, // 站房总量
    statusBarHeight:0, // 状态栏高度
    width: 414,
    height: 320,
    firstInit: true,
  },
  async onLoad() {  
    let { statusBarHeight } = app.data; // 手机状态栏高度 
    this.setData({
      statusBarHeight,  
    })  
    Store.dispatch({
      type: 'SET_FROM',
      form: {

      },
    })
 
    // 初始化图表s 
    var zf_list = await app._selected() // 获取站房
    var sb_list = await app._selectYcxlm({ station: zf_list.data[0].list[0].station }) // 参数传的是站房id
    this.setData({ 
      station: zf_list.data[0].list[0].station, // 站房id
      eqlist:[
        { YCXLM: zf_list.data[0].list[0].dept_name, dept_id: zf_list.data[0].list[0].station }, //【这点需要验证是不是传的站房id 还是企业id】
        ...sb_list.data
      ]
    }) 

    this.setData({
      title: this.data.eqlist.length > 0 ? this.data.eqlist[1].YCXLM : '',
    })
    // 初始化图表e  

    // var list_data = await this._getIndexStatistical()   //删除了负荷和电量
    this._getRedisStatistical() // 获取当前数据
    var res = await this._getNewStatistical()
    var list_data = res.data.list_data   
    var list_time = res.data.list_time 
    setTimeout(()=>{
      this.init('chart_1',list_data, list_time) // 百度echarts
    },100)
    
    // this._initChart1('chartId_1', 'chart_1', list_data) 
  },

  async onShow() { 
    var form = Store.getState().formInfor.form
    if (!form.selected) return
    var key = form.key
    switch (key) { 
      case 'selected': // 企业和站房列表接口 
        var sb_list = await app._selectYcxlm({ station: form.selected.station })// 获取设备列表  
        this.setData({
          title: sb_list.data[0].YCXLM,
          station: form.selected.station, // 站房id
           eqlist: [
             { YCXLM: form.selected.dept_name, dept_id: form.selected.station },//【这点需要验证是不是传的站房id 还是企业id】
            ...sb_list.data
          ]
        })
        this._setSourceData(this.chart_1) // 获取图表数据
        break
    }
    app._clearFromCache();
  },

  
  // init(chart,series, data) {
  //   this.selectComponent('#mychart-dom-bar').init((canvas, width, height,dpr) => {
  //     const chart = echarts.init(canvas, null, {
  //       width: width,
  //       height: height,
  //       devicePixelRatio: dpr 
  //     });
  //     setOption(chart, series, data);
  //     this[chart] = chart;
  //     return chart;
  //   });
  // },
  init(chart,series, data) {
    console.log(this.selectComponent('#mychart-dom-bar'))
    this.selectComponent('#mychart-dom-bar').init((canvas, width, height,dpr) => {
      console.log(canvas,width,height,dpr)
      if(this.data.firstInit){
        this.setData({
          width: width,
          height: height,
          firstInit:false
        })
      }
      const chart = echarts.init(canvas, null, {
        width: this.data.width,
        height: this.data.height,
        devicePixelRatio: dpr 
      });
      setOption(chart, series, data);
      this[chart] = chart;
      return chart;
    });
  },


  async _setSourceData(chart) { // 更新图表数据
    var res = null
    var list_data = []
    // if (this.data.eqIndex == 0) { // 负荷和电量  
    //   // switch (this.data.tabActive) {
    //   //   case 0: // 负荷
    //   //     list_data = await this._getIndexStatistical()
    //   //     this._getIndexStatisticalTotal() // 获取首页统计值【实时数据和总数据】
    //   //     break;
    //   //   case 1: // 电量
    //   //     list_data = await this._getIndexStatisticalDl()
    //   //     break;
    //   // }

    // } else { // 普通的二级
    //   res = await this._getNewStatistical()
    //   list_data = res.data.list_data
    // }
    var res = await this._getNewStatistical()
    var list_data = res.data.list_data
    var list_time = res.data.list_time
    this.init('chart_1',list_data, list_time) // 百度echarts
  },

  dzTabHandle(e) { // 最大当前
    var { index } = $.detail(e)
    this.setData({
      dzTab: index
    })
  },
  


  _getNewStatistical() {  // 普通二级图表数据
    return new Promise((resolve) => {   
      var params = {
        ycdm: this.data.tabsList[this.data.tabsActive], // 默认数据
        station: this.data.station, // 站房
        ycxlm: this.data.eqlist.length > 1 ? this.data.eqlist[this.data.eqIndex].YCXLM : '', // 设备
        time: this.data.time // 时间
      }
      wx.showLoading();
      api.$get(api.warningManage.getNewStatistical, params).then((res) => {
        wx.hideLoading();
        this.setData({ 
          max_data: res.data.max_data,
          now_data: res.data.now_data,
          measuring: res.data.measuring
        }) 
        resolve(res)
      })
    })
  },

  _getIndexStatistical(){ // 总负荷  
    return new Promise((resolve) => {
      var params = { 
        station: this.data.station, // 站房 
        time: this.data.time // 时间
      }
      wx.showLoading();
      api.$get(api.main.getIndexStatistical, params).then((res) => {
        wx.hideLoading();
        this.setData({
          z_max_data: res.data[0].max_data,
          j_max_data: res.data[1].max_data,
        })
        resolve([...res.data[1].list_data, ...res.data[0].list_data]) // 0：昨日 1：今日
      })
    }) 
  },

  _getIndexStatisticalDl() { // 首页电量统计   
    return new Promise((resolve) => {
      var params = {
        station: this.data.station, // 站房 
        time: this.data.time // 时间
      }
      wx.showLoading();
      api.$get(api.main.getIndexStatisticalDl, params).then((res) => {
        wx.hideLoading();
        this.setData({
          now_data: [res.data[0].now_data, res.data[1].now_data],
          max_data: [res.data[0].max_data, res.data[1].max_data],
        })
        resolve([...res.data[0].list_data, ...res.data[1].list_data]) // 0：正向 1：反向
      })
    })
  },

  _getIndexStatisticalTotal() { // 获取首页统计值【实时数据和总数据】
    return new Promise((resolve) => {
      var params = {
        station: this.data.station, // 站房 
        time: this.data.currentTime // 时间
      }
      api.$get(api.main.getIndexStatisticalTotal, params).then((res) => {
        this.setData({
          current_data: res.data.data,
          total_data: res.data.total_data
        })
      })
    })
  },

  openTimeHandle(e) { // 打开时间弹框
    this.setData({
      isShowTime: true,
      isShowC: false
    })
  },
  toYxPage(){
    $.linkurl(`/pages/onlineMonitoring/onlineMonitoringYX/onlineMonitoringYX?station=${this.data.station}&eqIndex=${this.data.eqIndex}&ycxlm=${ this.data.eqlist.length > 1 ? this.data.eqlist[this.data.eqIndex].YCXLM : ''}`)
  },
  toUnbalancePage(){
    $.linkurl(`/pages/onlineMonitoring/onlineMonitoringUnBalance/onlineMonitoringUnBalance?station=${this.data.station}&eqIndex=${this.data.eqIndex}&ycxlm=${ this.data.eqlist.length > 1 ? this.data.eqlist[this.data.eqIndex].YCXLM : ''}`)
  },

  timeCloseHandle(){ // 时间弹框
    this.setData({
      isShowTime: false, 
    }, () => {
      setTimeout(() => {
        this.setData({
          isShowC: true
        })
      }, 160)
    })
  },

  timeConfirmHandle(e) { // 时间组件传出来的数据
    var { time, key } = e.detail 
    this.setData({
      [key]: time.slice(0,10)
    }) 
    this._setSourceData(this.chart_1) // 更新数据 
  },

  onClosePop(){ // 关闭弹框
    this.setData({
      isShowPop: false
    }, () => {
      setTimeout(() => {
        this.setData({
          isShowC: true
        })
      }, 160)
    })
  },

  popTabHandle(e){ // 设备
    var {index} = $.detail(e)
    this.setData({
      eqIndex: index,
      title: this.data.eqlist[index].YCXLM
    }) 
    this._setSourceData(this.chart_1) // 更新数据 
    this.onClosePop()
  },
  toAllHandle(e){ 
    var { key } = e.detail 
    switch (key*1){
      case 1: // 选择站房
        this.setData({
          eqIndex: 1, // ---该需求了---
          isShowPop: false
        })
        var { type } = $.detail(e)
        Store.dispatch({
          type: 'SET_FROM',
          form: {
            key: 'selected', // 后台要的更改字段 
            type: 3, // 表单类型 1： radio  2：select 3:特殊的radio
            config: {

            },
          },
        })
        $.linkurl(`/pages/main/chooseForm/chooseForm`)
        break;
      case 2: // 设备
        if (this.data.isShowPop){
          this.onClosePop() // 关闭
        } else {
          this.setData({
            isShowPop: true,
            isShowC: false
          })
        }
        break; 
    } 
  },
  tabsHanlde(e){ // 多级菜单
    this.setData({
      tabsActive: e.detail.index
    })
    this._setSourceData(this.chart_1) // 更新数据
  },

  updateHandle(){ // 更新新数据
    this._getRedisStatistical()
  },

  tabHanlde(e) { // 2级菜单 
    this.setData({
      tabActive: e.detail.index*1
    })  
    this._setSourceData(this.chart_1) // 更新数据
    this._getRedisStatistical()
  },
  updataIndexStatisticalTotal(){ // 更新总数据
    this.setData({
      currentTime: $.transformTime(), // 当前实际时间
    })
    this._getIndexStatisticalTotal() // 获取当前数据
  },

  _getRedisStatistical(){
    return new Promise((resolve) => {
      var params = {
        ycdm: this.data.tabsList[this.data.tabsActive], // 默认数据
        station: this.data.station, // 站房
        ycxlm: this.data.eqlist.length>1?this.data.eqlist[this.data.eqIndex].YCXLM:'', // 设备
        time: this.data.time // 时间
      }
      wx.showLoading();
      api.$get(api.warningManage.getRedisStatistical, params).then((res) => {
        wx.hideLoading();
        this.setData({
          now_data: res.data.now_data,
        })
      })
    })
  }
 

});
